草庐IT

Android HTML ImageGetter 作为 AsyncTask

全部标签

c++ - 为什么不将字符串文字作为对数组的引用而不是不透明指针传递?

在C++中,字符串文字的类型是constchar[N],其中N,如std::size_t,是字符数加一(零字节终止符)。它们驻留在静态存储中,从程序初始化到终止都可用。通常,采用常量字符串的函数不需要std::basic_string接口(interface),或者更愿意避免动态分配;例如,他们可能只需要字符串本身及其长度。std::basic_string尤其必须提供一种从语言的native字符串文字构造的方法。这些函数提供了一个采用C风格字符串的变体:voidfunction_that_takes_a_constant_string(constchar*/*const*/s);//

c++ - 如何将非静态成员函数作为 unique_ptr 删除器传递

这个问题在这里已经有了答案:HowCanIPassaMemberFunctiontoaFunctionPointer?(3个答案)关闭7年前。#include#include#include#includeclassclient{private:std::unique_ptruptr_curl_;inlineCURL*init_curl(){CURLcoderesult=curl_global_init(CURL_GLOBAL_DEFAULT);if(result!=CURLE_OK)throwstd::logic_error(curl_easy_strerror(result));r

c++ - 传递 std::ofstream 作为参数时,为什么我要生成 "use of deleted"函数?

这个问题在这里已经有了答案:Whycopyingstringstreamisnotallowed?(3个答案)C++copyastreamobject(5个答案)关闭7年前。我有一个成员是std::ofstreamfBinaryFile和一个voidsetFile(std::ofstream&pBinaryFile){fBinaryFile=pBinaryFile;}输出:Data.h:86:16:error:useofdeletedfunction‘std::basic_ofstream&std::basic_ofstream::operator=(conststd::basic_o

c++ - std::cout 将 uint8_t 作为字符处理

如果我运行这段代码:std::cout(65);它会输出:A这是数字65的ASCII等价物。这是因为uint8_t被简单地定义为:typedefunsignedcharuint8_t;这种行为是标准的吗?定义uint8_t保证作为数字而不是字符来处理不是更好的方法吗?我无法理解如果我想打印uint8_t变量的值,它将被打印为一个字符的逻辑。附言我正在使用MSVS2013。 最佳答案 Isthisbehaviorastandard行为是标准的,因为如果uint8_t是unsignedchar的typedef,那么它将始终打印一个字符为

c++ - 将虚拟方法作为接收迭代器的模板

我知道不能在C++中为虚方法使用模板(反之亦然),例如讨论here和here.不幸的是,我不确定在我的案例中如何处理该限制。我们有一个包含方法模板的类模板:templateclassBeliefSet:publicBelief{private:std::vectorm_Facts;public:templatevoidSetFacts(IterIterBegin,IterIterEnd,boolAppend=false){if(!Append){m_Facts.clear();}m_Facts.insert(m_Facts.end(),IterBegin,IterEnd);}};Set

c++ - 接收通用 map 作为参数的模板函数

在很多情况下,我们希望对完全相同的std::map或std::unordered_map执行一些操作,独立于map的类型。让我们考虑以下示例:#include#include#includetemplateclassContainer>voidprintMap(ContainerinputMap,booladditionalParam=false){for(constpairp:inputMap)coutmap1;map1.emplace(a,b);unordered_mapmap2;map2.emplace(a,b);printMap(map1);printMap(map2);ret

C++ 引用指针作为改变指针的参数

我最近遇到了*&作为函数中的参数。据我了解,它类似于**。为什么在改变指针的函数中需要它?例如。使用new关键字假设我有一个指针int*a,如果我想执行a=newint;为什么我必须将参数作为“指针引用”传递>在那个函数里面? 最佳答案 如果函数以int*为参数,那么指针本身是按值传递的,这意味着函数内部对指针本身(不是指针对象)的任何修改与原始指针。例如voidfoo(int*a){a=newint;}int*a=nullptr;foo(a);//aisstillnullptrhere如果你把参数类型改成int*&会不一样void

c++ - 使用抽象类作为模板类型

我对C++还是很陌生(从Java过来的)。我有一个Actor类型的STL列表。当Actor只包含“真正的”方法时,就没有问题了。我现在想将这个类扩展到几个类,并且需要将一些方法更改为抽象的,因为它们不再像具体的那样有意义。正如我预期的那样(根据文档),这是个坏消息,因为您无法再实例化Actor,因此当我遍历我的列表时,我遇到了问题。C++的方法是什么?如有不明之处请见谅 最佳答案 你不能直接处理这个:正如您所见,当类是抽象类时,您无法实例化对象。由于切片问题,即使类不是抽象的,您也无法将派生对象放入列表中。解决方案是使用指针。所以第

c++ - 作为返回值的 STL 迭代器

我有A类,其中包含std::vector,我想从A类外部访问vector。我首先想到的是创建一个将迭代器返回给vector的get函数,但是遍历vector我将需要两个迭代器(开始和结束)。我想知道有什么方法(技术或模式)可以只用一个迭代器迭代整个vector吗?或者也许是其他一些访问vector的方法,当然不使用vector作为返回值:) 最佳答案 为什么不在您的类中同时添加一个begin()和end()函数,只需returnv.begin();和returnv.end();?(假设v是您的vector。)classMyVecto

c++ - 返回该对象(不是作为指针)时是否不打算调用析构函数?

我有一个函数:staticBwahboo(){Bwahbwah;returnbwah;}还有一个主要功能:intmain(){Bwahboo=Assigner::boo();coutBwah的析构函数仅在“到达此处”打印后调用一次。这是有保证的还是编译器优化? 最佳答案 这是一种称为返回值优化(RVO)的优化。这是一个常见的优化,但您不能依赖它。这里有两个非常好的链接,可以帮助您了解更多信息:首先,一篇关于passbyvalue,rvaluesemantics,thereturnvalueoptimization,andrvalue